home *** CD-ROM | disk | FTP | other *** search
/ FishMarket 1.0 / FishMarket v1.0.iso / fishies / 276-300 / disk_280 / graph / list.h < prev    next >
C/C++ Source or Header  |  1992-05-06  |  1KB  |  47 lines

  1. /*
  2.  *                 GRAPH, Version 1.00 - 4 August 1989
  3.  *
  4.  *            Copyright 1989, David Gay. All Rights Reserved.
  5.  *            This software is freely redistrubatable.
  6.  */
  7.  
  8. /* Simplify and "genericize" list operations */
  9. #ifndef LIST_H
  10. #define LIST_H
  11.  
  12. #include <exec/nodes.h>
  13. #include <exec/lists.h>
  14. #include <stddef.h>
  15.  
  16. /* The standard list elements */
  17. typedef struct MinList list;
  18. typedef struct MinNode node;
  19. typedef struct List tlist; /* Typed list */
  20. typedef struct Node tnode; /* Typed (&named) node */
  21.  
  22. #define new_list(list) NewList((tlist *)(list))
  23.  
  24. #define add_head(list, node) AddHead((tlist *)(list), (tnode *)(node))
  25. #define add_tail(list, node) AddTail((tlist *)(list), (tnode *)(node))
  26. #define rem_head(list) (void *)RemHead((tlist *)(list))
  27. #define rem_tail(list) (void *)RemTail((tlist *)(list))
  28.  
  29. #define remove(node) Remove((tnode *)(node))
  30. #define insert(list, node, pos) Insert((tlist *)(list), (tnode *)(node), (tnode
  31.  *)(pos))
  32.  
  33. #define first(list) ((void *)((tlist *)(list))->lh_Head)
  34. #define last(list) ((void *)((tlist *)(list))->lh_Tail)
  35. #define empty(list) (((tlist *)(list))->lh_TailPred == (tnode *)(list))
  36.  
  37. #define succ(node) (void *)(((tnode *)(node))->ln_Succ)
  38. #define pred(node) (void *)(((tnode *)(node))->ln_Pred)
  39.  
  40. #define alloc_node(size) AllocMem((size), 0L)
  41.  
  42. /* Free all elements of a homogeneous list */
  43. void free_list(list *l, size_t size);
  44.  
  45. #endif
  46.  
  47.